Puntaje de López - VaR Delta-Normal
-----------------------------------
Importar datos.
~~~~~~~~~~~~~~~
.. code:: r
datos = read.csv("Tres acciones.csv", sep = ";")
Matriz de precios.
~~~~~~~~~~~~~~~~~~
.. code:: r
precios = datos[,-1]
Proporciones de inversión.
~~~~~~~~~~~~~~~~~~~~~~~~~~
.. code:: r
proporciones = c(0.25,0.5,0.25)
Matriz de rendimientos.
~~~~~~~~~~~~~~~~~~~~~~~
.. code:: r
rendimientos = matrix(, nrow(precios)-1, ncol(precios))
for(i in 1:ncol(precios)){
rendimientos[,i] = diff(log(precios[,i]))
}
Rendimientos portafolio de inversión
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. code:: r
rendimientos_portafolio = vector()
for(i in 1:nrow(rendimientos)){
rendimientos_portafolio[i] = sum(rendimientos[i,]*proporciones)
}
Horizonte de tiempo de un día
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. code:: r
t = 1
Backtesting método VaR Delta-Normal (NC = 95% y H = 250)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. code:: r
NC = 0.95
Ventana para Backtesting
~~~~~~~~~~~~~~~~~~~~~~~~
.. code:: r
ventana_backtesting = 250
rendimientos_backtesting = matrix(, ventana_backtesting, ncol(rendimientos))
for(i in 1:ncol(rendimientos)){
rendimientos_backtesting[,i] = rendimientos[-c(nrow(rendimientos)-ventana_backtesting:nrow(rendimientos)), i]
}
#Para el portafolio de Inversión
rendimientos_backtesting_portafolio = rendimientos_portafolio[-c(nrow(rendimientos)-ventana_backtesting:nrow(rendimientos))]
Volatilidad histórica y rendimiento medio (NC = 95% y H = 250)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. code:: r
volatilidad_historica = matrix(, ventana_backtesting, ncol(rendimientos))
rendimiento_medio = matrix(, ventana_backtesting, ncol(rendimientos))
for(j in 1:ncol(rendimientos)){
for(i in 1:ventana_backtesting){
volatilidad_historica[i,j] = sd(rendimientos[1:(nrow(rendimientos)-ventana_backtesting+i), j])
rendimiento_medio[i,j] = mean(rendimientos[1:(nrow(rendimientos)-ventana_backtesting+i), j])
}
}
VaR Delta-Normal para Backtesting (NC = 95% y H = 250)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. code:: r
VaR_sin_promedios = matrix(, ventana_backtesting, ncol(rendimientos))
VaR_con_promedios = matrix(, ventana_backtesting, ncol(rendimientos))
for(i in 1:ncol(rendimientos)){
VaR_sin_promedios[,i] = volatilidad_historica[,i]*qnorm(NC)*sqrt(t)
VaR_con_promedios[,i] = abs(qnorm(1-NC, mean = rendimiento_medio[,i]*t, sd = volatilidad_historica[,i]*sqrt(t)))
}
Excepciones VaR Delta-Normal (NC = 95% y H = 250)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. code:: r
excepciones_sin_promedios = vector()
excepciones_con_promedios = vector()
for(i in 1:ncol(rendimientos)){
excepciones_sin_promedios[i] = sum(ifelse(-VaR_sin_promedios[,i] > rendimientos_backtesting[,i], 1, 0))
excepciones_con_promedios[i] = sum(ifelse(-VaR_con_promedios[,i] > rendimientos_backtesting[,i], 1, 0))
}
p.gorro_sin_promedios = excepciones_sin_promedios/ventana_backtesting
p.gorro_con_promedios = excepciones_con_promedios/ventana_backtesting
excepciones_sin_promedios
excepciones_con_promedios
.. raw:: html
- 17
- 6
- 15
.. raw:: html
- 17
- 7
- 16
Prueba de Kupiec VaR Delta-Normal (NC = 95% y H = 250)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. code:: r
tu_sin_promedios = (p.gorro_sin_promedios-(1-NC))/sqrt(p.gorro_sin_promedios*(1-p.gorro_sin_promedios)/ventana_backtesting)
tu_con_promedios = (p.gorro_con_promedios-(1-NC))/sqrt(p.gorro_con_promedios*(1-p.gorro_con_promedios)/ventana_backtesting)
tu_critico = abs(qt((1-NC)/2, ventana_backtesting-1))
aprobados_sin_promedios = vector()
aprobados_con_promedios = vector()
for(i in 1:ncol(rendimientos)){
aprobados_sin_promedios[i] = ifelse(abs(tu_sin_promedios[i]) < tu_critico,aprobados_sin_promedios[i] <- 1, aprobados_sin_promedios[i] <- 0)
aprobados_con_promedios[i] = ifelse(abs(tu_con_promedios[i]) < tu_critico,aprobados_con_promedios[i] <- 1, aprobados_con_promedios[i] <- 0)
}
aprobados_sin_promedios
aprobados_con_promedios
.. raw:: html
- 1
- 0
- 1
.. raw:: html
- 1
- 0
- 1
Volatilidad y rendimiento medio del portafolio (NC = 95% y H = 250)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. code:: r
volatilidad_historica_portafolio = vector()
rendimiento_medio_portafolio = vector()
for(i in 1:ventana_backtesting){
volatilidad_historica_portafolio[i] = sd(rendimientos_portafolio[1:(nrow(rendimientos)-ventana_backtesting+i)])
rendimiento_medio_portafolio[i] = mean(rendimientos_portafolio[1:(nrow(rendimientos)-ventana_backtesting+i)])
}
VaR Delta-Normal del portafolio de inversión para Backtesting (NC = 95% y H = 250)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. code:: r
VaR_portafolio_sin_promedios = vector()
VaR_portafolio_con_promedios = vector()
for(i in 1:ventana_backtesting){
VaR_portafolio_sin_promedios[i] = volatilidad_historica_portafolio[i]*qnorm(NC)*sqrt(t)
VaR_portafolio_con_promedios[i] = abs(qnorm(1-NC, mean = rendimiento_medio_portafolio[i], sd = volatilidad_historica_portafolio[i]))
}
Excepciones VaR Delta-Normal del portafolio de inversión (NC = 95% y H = 250)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. code:: r
excepciones_sin_promedios_portafolio = sum(ifelse(-VaR_portafolio_sin_promedios > rendimientos_backtesting_portafolio, 1, 0))
excepciones_con_promedios_portafolio = sum(ifelse(-VaR_portafolio_con_promedios > rendimientos_backtesting_portafolio, 1, 0))
p.gorro_sin_promedios_portafolio = excepciones_sin_promedios_portafolio/ventana_backtesting
p.gorro_con_promedios_portafolio = excepciones_con_promedios_portafolio/ventana_backtesting
excepciones_sin_promedios_portafolio
excepciones_con_promedios_portafolio
.. raw:: html
8
.. raw:: html
8
Prueba de Kupiec VaR Delta-Normal del portafolio de inversión (NC = 95% y H = 250)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. code:: r
tu_sin_promedios_portafolio = (p.gorro_sin_promedios_portafolio-(1-NC))/sqrt(p.gorro_sin_promedios_portafolio*(1-p.gorro_sin_promedios_portafolio)/ventana_backtesting)
tu_con_promedios_portafolio = (p.gorro_con_promedios_portafolio-(1-NC))/sqrt(p.gorro_con_promedios_portafolio*(1-p.gorro_con_promedios_portafolio)/ventana_backtesting)
tu_critico = abs(qt((1-NC)/2, ventana_backtesting-1))
aprobados_sin_promedios_portafolio = ifelse(abs(tu_sin_promedios_portafolio) < tu_critico, aprobados_sin_promedios_portafolio <- 1, aprobados_sin_promedios_portafolio <- 0)
aprobados_con_promedios_portafolio = ifelse(abs(tu_con_promedios_portafolio) < tu_critico, aprobados_con_promedios_portafolio <- 1, aprobados_con_promedios_portafolio <- 0)
aprobados_sin_promedios_portafolio
aprobados_con_promedios_portafolio
.. raw:: html
1
.. raw:: html
1
Puntaje de López
~~~~~~~~~~~~~~~~
Compara los métodos del VaR utilizados y escoge el modelo más adecuado.
Utiliza una función de pérdidas (:math:`C_t`) para asignar puntaje a
cada observación dependiendo si la pérdida del día excede el VaR o no.
**Los métodos de VaR con mayor puntaje serán considerados como los de
cobertura más débiles.**
.. figure:: Formula1LopezVaR.jpg
:alt: 1
1
:math:`𝐶_𝑡:` Puntaje asignado a la pérdida que excede el VaR.
:math:`𝐿_𝑡:` Valor de la pérdida real del día :math:`t` en valor
absoluto.
:math:`𝑉𝑎𝑅_𝑡:` Valor en Riesgo del día :math:`t`.
.. figure:: Formula2LopezVaR.jpg
:alt: 2
2
**El método que minimice esta sumatoria proveerá la mejor cobertura
condicionada.**
Puntaje de López - VaR Delta-Normal (NC = 95% y H = 250)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. code:: r
lopez_sin_promedios = matrix(, ventana_backtesting, ncol(rendimientos))
lopez_con_promedios = matrix(, ventana_backtesting, ncol(rendimientos))
for(j in 1:ncol(rendimientos)){
for(i in 1:ventana_backtesting){
ifelse(-VaR_sin_promedios[i,j] > rendimientos_backtesting[i,j], lopez_sin_promedios[i,j] <- 1+(abs(rendimientos_backtesting[i,j])-VaR_sin_promedios[i,j])^2, lopez_sin_promedios[i,j] <- 0)
ifelse(-VaR_con_promedios[i,j] > rendimientos_backtesting[i,j], lopez_con_promedios[i,j] <- 1+(abs(rendimientos_backtesting[i,j])-VaR_con_promedios[i,j])^2, lopez_con_promedios[i,j] <- 0)
}
}
puntaje_lopez_sin_promedios_portafolio = sum(ifelse(-VaR_portafolio_sin_promedios > rendimientos_backtesting_portafolio, puntaje_lopez_sin_promedios_portafolio <- 1+(abs(rendimientos_backtesting_portafolio)-VaR_portafolio_sin_promedios)^2, puntaje_lopez_sin_promedios_portafolio <- 0))
puntaje_lopez_con_promedios_portafolio = sum(ifelse(-VaR_portafolio_con_promedios > rendimientos_backtesting_portafolio, puntaje_lopez_con_promedios_portafolio <- 1+(abs(rendimientos_backtesting_portafolio)-VaR_portafolio_con_promedios)^2, puntaje_lopez_con_promedios_portafolio <- 0))
puntaje_lopez_sin_promedios = apply(lopez_sin_promedios, 2, sum)
puntaje_lopez_con_promedios = apply(lopez_con_promedios, 2, sum)
puntaje_lopez_sin_promedios
puntaje_lopez_con_promedios
puntaje_lopez_sin_promedios_portafolio
puntaje_lopez_con_promedios_portafolio
.. raw:: html
- 17.008975741454
- 6.00019579925925
- 15.0021205275282
.. raw:: html
- 17.0090693230293
- 7.00021210746552
- 16.0021880560683
.. raw:: html
8.00069513946404
.. raw:: html
8.0007217329587
Backtesting método VaR Delta-Normal (NC = 99% y H = 250)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. code:: r
NC = 0.99
VaR Delta-Normal para Backtesting (NC = 99% y H = 250)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. code:: r
VaR_sin_promedios = matrix(, ventana_backtesting, ncol(rendimientos))
VaR_con_promedios = matrix(, ventana_backtesting, ncol(rendimientos))
for(i in 1:ncol(rendimientos)){
VaR_sin_promedios[,i] = volatilidad_historica[,i]*qnorm(NC)*sqrt(t)
VaR_con_promedios[,i] = abs(qnorm(1-NC, mean = rendimiento_medio[,i]*t, sd = volatilidad_historica[,i]*sqrt(t)))
}
Excepciones VaR Delta-Normal (NC = 99% y H = 250)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. code:: r
excepciones_sin_promedios = vector()
excepciones_con_promedios = vector()
for(i in 1:ncol(rendimientos)){
excepciones_sin_promedios[i] = sum(ifelse(-VaR_sin_promedios[,i] > rendimientos_backtesting[,i], 1, 0))
excepciones_con_promedios[i] = sum(ifelse(-VaR_con_promedios[,i] > rendimientos_backtesting[,i], 1, 0))
}
p.gorro_sin_promedios = excepciones_sin_promedios/ventana_backtesting
p.gorro_con_promedios = excepciones_con_promedios/ventana_backtesting
excepciones_sin_promedios
excepciones_con_promedios
.. raw:: html
- 7
- 0
- 4
.. raw:: html
- 7
- 1
- 4
Prueba de Kupiec VaR Delta-Normal (NC = 99% y H = 250)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. code:: r
tu_sin_promedios = (p.gorro_sin_promedios-(1-NC))/sqrt(p.gorro_sin_promedios*(1-p.gorro_sin_promedios)/ventana_backtesting)
tu_con_promedios = (p.gorro_con_promedios-(1-NC))/sqrt(p.gorro_con_promedios*(1-p.gorro_con_promedios)/ventana_backtesting)
tu_critico = abs(qt((1-NC)/2, ventana_backtesting-1))
aprobados_sin_promedios = vector()
aprobados_con_promedios = vector()
for(i in 1:ncol(rendimientos)){
aprobados_sin_promedios[i] = ifelse(abs(tu_sin_promedios[i]) < tu_critico,aprobados_sin_promedios[i] <- 1, aprobados_sin_promedios[i] <- 0)
aprobados_con_promedios[i] = ifelse(abs(tu_con_promedios[i]) < tu_critico, aprobados_con_promedios[i] <- 1, aprobados_con_promedios[i] <- 0)
}
aprobados_sin_promedios
aprobados_con_promedios
.. raw:: html
- 1
- 0
- 1
.. raw:: html
- 1
- 1
- 1
VaR Delta-Normal para Backtesting del portafolio de inversión (NC = 99% y H = 250)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. code:: r
VaR_portafolio_sin_promedios = vector()
VaR_portafolio_con_promedios = vector()
for(i in 1:ventana_backtesting){
VaR_portafolio_sin_promedios[i] = volatilidad_historica_portafolio[i]*qnorm(NC)*sqrt(t)
VaR_portafolio_con_promedios[i] = abs(qnorm(1-NC, mean = rendimiento_medio_portafolio[i], sd = volatilidad_historica_portafolio[i]))
}
Excepciones VaR Delta-Normal del portafolio de inversión (NC = 99% y H = 250)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. code:: r
excepciones_sin_promedios_portafolio = sum(ifelse(-VaR_portafolio_sin_promedios > rendimientos_backtesting_portafolio, 1, 0))
excepciones_con_promedios_portafolio = sum(ifelse(-VaR_portafolio_con_promedios > rendimientos_backtesting_portafolio, 1, 0))
p.gorro_sin_promedios_portafolio = excepciones_sin_promedios_portafolio/ventana_backtesting
p.gorro_con_promedios_portafolio = excepciones_con_promedios_portafolio/ventana_backtesting
excepciones_sin_promedios_portafolio
excepciones_con_promedios_portafolio
.. raw:: html
2
.. raw:: html
2
Prueba de Kupiec VaR Delta-Normal (NC = 99% y H = 250)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. code:: r
tu_sin_promedios_portafolio = (p.gorro_sin_promedios_portafolio-(1-NC))/sqrt(p.gorro_sin_promedios_portafolio*(1-p.gorro_sin_promedios_portafolio)/ventana_backtesting)
tu_con_promedios_portafolio = (p.gorro_con_promedios_portafolio-(1-NC))/sqrt(p.gorro_con_promedios_portafolio*(1-p.gorro_con_promedios_portafolio)/ventana_backtesting)
tu_critico = abs(qt((1-NC)/2, ventana_backtesting-1))
aprobados_sin_promedios_portafolio = ifelse(abs(tu_sin_promedios_portafolio) < tu_critico, aprobados_sin_promedios_portafolio <- 1, aprobados_sin_promedios_portafolio <- 0)
aprobados_con_promedios_portafolio = ifelse(abs(tu_con_promedios_portafolio) < tu_critico, aprobados_con_promedios_portafolio <- 1, aprobados_con_promedios_portafolio <- 0)
aprobados_sin_promedios_portafolio
aprobados_con_promedios_portafolio
.. raw:: html
1
.. raw:: html
1
Puntaje de López - VaR Delta-Normal (NC = 99% y H = 250)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. code:: r
lopez_sin_promedios = matrix(, ventana_backtesting, ncol(rendimientos))
lopez_con_promedios = matrix(, ventana_backtesting, ncol(rendimientos))
for(j in 1:ncol(rendimientos)){
for(i in 1:ventana_backtesting){
ifelse(-VaR_sin_promedios[i,j] > rendimientos_backtesting[i,j], lopez_sin_promedios[i,j] <- 1+(abs(rendimientos_backtesting[i,j])-VaR_sin_promedios[i,j])^2, lopez_sin_promedios[i,j] <- 0)
ifelse(-VaR_con_promedios[i,j] > rendimientos_backtesting[i,j], lopez_con_promedios[i,j] <- 1+(abs(rendimientos_backtesting[i,j])-VaR_con_promedios[i,j])^2, lopez_con_promedios[i,j] <- 0)
}
}
puntaje_lopez_sin_promedios_portafolio = sum(ifelse(-VaR_portafolio_sin_promedios > rendimientos_backtesting_portafolio, puntaje_lopez_sin_promedios_portafolio <- 1+(abs(rendimientos_backtesting_portafolio)-VaR_portafolio_sin_promedios)^2, puntaje_lopez_sin_promedios_portafolio <- 0))
puntaje_lopez_con_promedios_portafolio = sum(ifelse(-VaR_portafolio_con_promedios > rendimientos_backtesting_portafolio, puntaje_lopez_con_promedios_portafolio <- 1+(abs(rendimientos_backtesting_portafolio)-VaR_portafolio_con_promedios)^2, puntaje_lopez_con_promedios_portafolio <- 0))
puntaje_lopez_sin_promedios = apply(lopez_sin_promedios, 2, sum)
puntaje_lopez_con_promedios = apply(lopez_con_promedios, 2, sum)
puntaje_lopez_sin_promedios
puntaje_lopez_con_promedios
puntaje_lopez_sin_promedios_portafolio
puntaje_lopez_con_promedios_portafolio
.. raw:: html
- 7.00397064315263
- 0
- 4.00064241285639
.. raw:: html
- 7.00401163260812
- 1.00000000278114
- 4.00066428484215
.. raw:: html
2.00014445916113
.. raw:: html
2.00015154099775
Backtesting método VaR Delta-Normal (NC = 99% y H = 500)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. code:: r
NC = 0.99
Ventana para Backtesting
~~~~~~~~~~~~~~~~~~~~~~~~
.. code:: r
ventana_backtesting = 500
rendimientos_backtesting = matrix(, ventana_backtesting, ncol(rendimientos))
for(i in 1:ncol(rendimientos)){
rendimientos_backtesting[,i] = rendimientos[-c(nrow(rendimientos)-ventana_backtesting:nrow(rendimientos)), i]
}
#Para el portafolio de Inversión
rendimientos_backtesting_portafolio = rendimientos_portafolio[-c(nrow(rendimientos)-ventana_backtesting:nrow(rendimientos))]
Volatilidad histórica y rendimiento medio (NC = 99% y H = 500)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. code:: r
volatilidad_historica = matrix(, ventana_backtesting, ncol(rendimientos))
rendimiento_medio = matrix(, ventana_backtesting, ncol(rendimientos))
for(j in 1:ncol(rendimientos)){
for(i in 1:ventana_backtesting){
volatilidad_historica[i,j] = sd(rendimientos[1:(nrow(rendimientos)-ventana_backtesting+i), j])
rendimiento_medio[i,j] = mean(rendimientos[1:(nrow(rendimientos)-ventana_backtesting+i), j])
}
}
VaR Delta-Normal para Backtesting (NC = 99% y H = 500)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. code:: r
VaR_sin_promedios = matrix(, ventana_backtesting, ncol(rendimientos))
VaR_con_promedios = matrix(, ventana_backtesting, ncol(rendimientos))
for(i in 1:ncol(rendimientos)){
VaR_sin_promedios[,i] = volatilidad_historica[,i]*qnorm(NC)*sqrt(t)
VaR_con_promedios[,i] = abs(qnorm(1-NC, mean = rendimiento_medio[,i]*t, sd = volatilidad_historica[,i]*sqrt(t)))
}
Excepciones VaR Delta-Normal (NC = 99% y H = 500)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. code:: r
excepciones_sin_promedios = vector()
excepciones_con_promedios = vector()
for(i in 1:ncol(rendimientos)){
excepciones_sin_promedios[i] = sum(ifelse(-VaR_sin_promedios[,i] > rendimientos_backtesting[,i], 1, 0))
excepciones_con_promedios[i] = sum(ifelse(-VaR_con_promedios[,i] > rendimientos_backtesting[,i], 1, 0))
}
p.gorro_sin_promedios = excepciones_sin_promedios/ventana_backtesting
p.gorro_con_promedios = excepciones_con_promedios/ventana_backtesting
excepciones_sin_promedios
excepciones_con_promedios
.. raw:: html
- 12
- 2
- 6
.. raw:: html
- 12
- 3
- 6
Prueba de Kupiec VaR Delta-Normal (NC = 99% y H = 500)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. code:: r
tu_sin_promedios = (p.gorro_sin_promedios-(1-NC))/sqrt(p.gorro_sin_promedios*(1-p.gorro_sin_promedios)/ventana_backtesting)
tu_con_promedios = (p.gorro_con_promedios-(1-NC))/sqrt(p.gorro_con_promedios*(1-p.gorro_con_promedios)/ventana_backtesting)
tu_critico = abs(qt((1-NC)/2, ventana_backtesting-1))
aprobados_sin_promedios = vector()
aprobados_con_promedios = vector()
for(i in 1:ncol(rendimientos)){
aprobados_sin_promedios[i] = ifelse(abs(tu_sin_promedios[i]) < tu_critico,aprobados_sin_promedios[i] <- 1, aprobados_sin_promedios[i] <- 0)
aprobados_con_promedios[i] = ifelse(abs(tu_con_promedios[i]) < tu_critico,aprobados_con_promedios[i] <- 1, aprobados_con_promedios[i] <- 0)
}
aprobados_sin_promedios
aprobados_con_promedios
.. raw:: html
- 1
- 1
- 1
.. raw:: html
- 1
- 1
- 1
Volatilidad y rendimiento medio del portafolio (NC = 99% y H = 500)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. code:: r
volatilidad_historica_portafolio = vector()
rendimiento_medio_portafolio = vector()
for(i in 1:ventana_backtesting){
volatilidad_historica_portafolio[i] = sd(rendimientos_portafolio[1:(nrow(rendimientos)-ventana_backtesting+i)])
rendimiento_medio_portafolio[i] = mean(rendimientos_portafolio[1:(nrow(rendimientos)-ventana_backtesting+i)])
}
VaR Delta-Normal para Backtesting del portafolio de inversión (NC = 99% y H = 500)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. code:: r
VaR_portafolio_sin_promedios = vector()
VaR_portafolio_con_promedios = vector()
for(i in 1:ventana_backtesting){
VaR_portafolio_sin_promedios[i] = volatilidad_historica_portafolio[i]*qnorm(NC)*sqrt(t)
VaR_portafolio_con_promedios[i] = abs(qnorm(1-NC, mean = rendimiento_medio_portafolio[i], sd = volatilidad_historica_portafolio[i]))
}
Excepciones VaR Delta-Normal del portafolio de inversión (NC = 99% y H = 500)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. code:: r
excepciones_sin_promedios_portafolio = sum(ifelse(-VaR_portafolio_sin_promedios > rendimientos_backtesting_portafolio, 1, 0))
excepciones_con_promedios_portafolio = sum(ifelse(-VaR_portafolio_con_promedios > rendimientos_backtesting_portafolio, 1, 0))
p.gorro_sin_promedios_portafolio = excepciones_sin_promedios_portafolio/ventana_backtesting
p.gorro_con_promedios_portafolio = excepciones_con_promedios_portafolio/ventana_backtesting
excepciones_sin_promedios_portafolio
excepciones_con_promedios_portafolio
.. raw:: html
5
.. raw:: html
5
Prueba de Kupiec VaR Delta-Normal (NC = 99% y H = 500)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. code:: r
tu_sin_promedios_portafolio = (p.gorro_sin_promedios_portafolio-(1-NC))/sqrt(p.gorro_sin_promedios_portafolio*(1-p.gorro_sin_promedios_portafolio)/ventana_backtesting)
tu_con_promedios_portafolio = (p.gorro_con_promedios_portafolio-(1-NC))/sqrt(p.gorro_con_promedios_portafolio*(1-p.gorro_con_promedios_portafolio)/ventana_backtesting)
tu_critico = abs(qt((1-NC)/2, ventana_backtesting-1))
aprobados_sin_promedios_portafolio = ifelse(abs(tu_sin_promedios_portafolio) < tu_critico, aprobados_sin_promedios_portafolio <- 1, aprobados_sin_promedios_portafolio <- 0)
aprobados_con_promedios_portafolio = ifelse(abs(tu_con_promedios_portafolio) < tu_critico, aprobados_con_promedios_portafolio <- 1,aprobados_con_promedios_portafolio <- 0)
aprobados_sin_promedios_portafolio
aprobados_con_promedios_portafolio
.. raw:: html
1
.. raw:: html
1
Puntaje de López - VaR Delta-Normal (NC = 99% y H = 500)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. code:: r
lopez_sin_promedios = matrix(, ventana_backtesting, ncol(rendimientos))
lopez_con_promedios = matrix(, ventana_backtesting, ncol(rendimientos))
for(j in 1:ncol(rendimientos)){
for(i in 1:ventana_backtesting){
ifelse(-VaR_sin_promedios[i,j] > rendimientos_backtesting[i,j], lopez_sin_promedios[i,j] <- 1+(abs(rendimientos_backtesting[i,j])-VaR_sin_promedios[i,j])^2, lopez_sin_promedios[i,j] <- 0)
ifelse(-VaR_con_promedios[i,j] > rendimientos_backtesting[i,j], lopez_con_promedios[i,j] <- 1+(abs(rendimientos_backtesting[i,j])-VaR_con_promedios[i,j])^2, lopez_con_promedios[i,j] <- 0)
}
}
puntaje_lopez_sin_promedios_portafolio = sum(ifelse(-VaR_portafolio_sin_promedios > rendimientos_backtesting_portafolio, puntaje_lopez_sin_promedios_portafolio <- 1+(abs(rendimientos_backtesting_portafolio)-VaR_portafolio_sin_promedios)^2, puntaje_lopez_sin_promedios_portafolio <- 0))
puntaje_lopez_con_promedios_portafolio = sum(ifelse(-VaR_portafolio_con_promedios > rendimientos_backtesting_portafolio, puntaje_lopez_con_promedios_portafolio <- 1+(abs(rendimientos_backtesting_portafolio)-VaR_portafolio_con_promedios)^2, puntaje_lopez_con_promedios_portafolio <- 0))
puntaje_lopez_sin_promedios = apply(lopez_sin_promedios, 2, sum)
puntaje_lopez_con_promedios = apply(lopez_con_promedios, 2, sum)
puntaje_lopez_sin_promedios
puntaje_lopez_con_promedios
puntaje_lopez_sin_promedios_portafolio
puntaje_lopez_con_promedios_portafolio
.. raw:: html
- 12.0048175999161
- 2.00116655363073
- 6.00073327511721
.. raw:: html
- 12.0048672309775
- 3.00118419466552
- 6.0007622227941
.. raw:: html
5.00028956100564
.. raw:: html
5.00030436976491
Backtesting método VaR Delta-Normal (NC = 95% y H = 500)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. code:: r
NC = 0.95
VaR Delta-Normal para Backtesting (NC = 95% y H = 500)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. code:: r
VaR_sin_promedios = matrix(, ventana_backtesting, ncol(rendimientos))
VaR_con_promedios = matrix(, ventana_backtesting, ncol(rendimientos))
for(i in 1:ncol(rendimientos)){
VaR_sin_promedios[,i] = volatilidad_historica[,i]*qnorm(NC)*sqrt(t)
VaR_con_promedios[,i] = abs(qnorm(1-NC, mean = rendimiento_medio[,i]*t, sd = volatilidad_historica[,i]*sqrt(t)))
}
Excepciones VaR Delta-Normal (NC = 95% y H = 500)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. code:: r
excepciones_sin_promedios = vector()
excepciones_con_promedios = vector()
for(i in 1:ncol(rendimientos)){
excepciones_sin_promedios[i] = sum(ifelse(-VaR_sin_promedios[,i] > rendimientos_backtesting[,i], 1, 0))
excepciones_con_promedios[i] = sum(ifelse(-VaR_con_promedios[,i] > rendimientos_backtesting[,i], 1, 0))
}
p.gorro_sin_promedios = excepciones_sin_promedios/ventana_backtesting
p.gorro_con_promedios = excepciones_con_promedios/ventana_backtesting
excepciones_sin_promedios
excepciones_con_promedios
.. raw:: html
- 28
- 12
- 22
.. raw:: html
- 28
- 13
- 23
Prueba de Kupiec VaR Delta-Normal (NC = 95% y H = 500)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. code:: r
tu_sin_promedios = (p.gorro_sin_promedios-(1-NC))/sqrt(p.gorro_sin_promedios*(1-p.gorro_sin_promedios)/ventana_backtesting)
tu_con_promedios = (p.gorro_con_promedios-(1-NC))/sqrt(p.gorro_con_promedios*(1-p.gorro_con_promedios)/ventana_backtesting)
tu_critico = abs(qt((1-NC)/2, ventana_backtesting-1))
aprobados_sin_promedios = vector()
aprobados_con_promedios = vector()
for(i in 1:ncol(rendimientos)){
aprobados_sin_promedios[i] = ifelse(abs(tu_sin_promedios[i]) < tu_critico, aprobados_sin_promedios[i] <- 1, aprobados_sin_promedios[i] <- 0)
aprobados_con_promedios[i] = ifelse(abs(tu_con_promedios[i]) < tu_critico, aprobados_con_promedios[i] <- 1, aprobados_con_promedios[i] <- 0)
}
aprobados_sin_promedios
aprobados_con_promedios
.. raw:: html
- 1
- 0
- 1
.. raw:: html
- 1
- 0
- 1
VaR Delta-Normal para Backtesting del portafolio de inversión (NC = 95% y H = 500)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. code:: r
VaR_portafolio_sin_promedios = vector()
VaR_portafolio_con_promedios = vector()
for(i in 1:ventana_backtesting){
VaR_portafolio_sin_promedios[i] = volatilidad_historica_portafolio[i]*qnorm(NC)*sqrt(t)
VaR_portafolio_con_promedios[i] = abs(qnorm(1-NC, mean = rendimiento_medio_portafolio[i], sd = volatilidad_historica_portafolio[i]))
}
Excepciones VaR Delta-Normal del portafolio de inversión (NC = 95% y H = 500)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. code:: r
excepciones_sin_promedios_portafolio = sum(ifelse(-VaR_portafolio_sin_promedios > rendimientos_backtesting_portafolio, 1, 0))
excepciones_con_promedios_portafolio = sum(ifelse(-VaR_portafolio_con_promedios > rendimientos_backtesting_portafolio, 1, 0))
p.gorro_sin_promedios_portafolio = excepciones_sin_promedios_portafolio/ventana_backtesting
p.gorro_con_promedios_portafolio = excepciones_con_promedios_portafolio/ventana_backtesting
excepciones_sin_promedios_portafolio
excepciones_con_promedios_portafolio
.. raw:: html
15
.. raw:: html
15
Prueba de Kupiec VaR Delta-Normal (NC = 95% y H = 500)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. code:: r
tu_sin_promedios_portafolio = (p.gorro_sin_promedios_portafolio-(1-NC))/sqrt(p.gorro_sin_promedios_portafolio*(1-p.gorro_sin_promedios_portafolio)/ventana_backtesting)
tu_con_promedios_portafolio = (p.gorro_con_promedios_portafolio-(1-NC))/sqrt(p.gorro_con_promedios_portafolio*(1-p.gorro_con_promedios_portafolio)/ventana_backtesting)
tu_critico = abs(qt((1-NC)/2, ventana_backtesting-1))
aprobados_sin_promedios_portafolio = ifelse(abs(tu_sin_promedios_portafolio) < tu_critico ,aprobados_sin_promedios_portafolio <- 1, aprobados_sin_promedios_portafolio <- 0)
aprobados_con_promedios_portafolio = ifelse(abs(tu_con_promedios_portafolio) < tu_critico, aprobados_con_promedios_portafolio <- 1, aprobados_con_promedios_portafolio <- 0)
aprobados_sin_promedios_portafolio
aprobados_con_promedios_portafolio
.. raw:: html
0
.. raw:: html
0
Puntaje de López - VaR Delta-Normal (NC = 95% y H = 500)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. code:: r
lopez_sin_promedios = matrix(, ventana_backtesting, ncol(rendimientos))
lopez_con_promedios = matrix(, ventana_backtesting, ncol(rendimientos))
for(j in 1:ncol(rendimientos)){
for(i in 1:ventana_backtesting){
ifelse(-VaR_sin_promedios[i,j] > rendimientos_backtesting[i,j], lopez_sin_promedios[i,j] <- 1+(abs(rendimientos_backtesting[i,j])-VaR_sin_promedios[i,j])^2, lopez_sin_promedios[i,j] <- 0)
ifelse(-VaR_con_promedios[i,j] > rendimientos_backtesting[i,j], lopez_con_promedios[i,j] <- 1+(abs(rendimientos_backtesting[i,j])-VaR_con_promedios[i,j])^2, lopez_con_promedios[i,j] <- 0)
}
}
puntaje_lopez_sin_promedios_portafolio = sum(ifelse(-VaR_portafolio_sin_promedios > rendimientos_backtesting_portafolio, puntaje_lopez_sin_promedios_portafolio <- 1+(abs(rendimientos_backtesting_portafolio)-VaR_portafolio_sin_promedios)^2, puntaje_lopez_sin_promedios_portafolio <- 0))
puntaje_lopez_con_promedios_portafolio = sum(ifelse(-VaR_portafolio_con_promedios > rendimientos_backtesting_portafolio, puntaje_lopez_con_promedios_portafolio <- 1+(abs(rendimientos_backtesting_portafolio)-VaR_portafolio_con_promedios)^2, puntaje_lopez_con_promedios_portafolio <- 0))
puntaje_lopez_sin_promedios = apply(lopez_sin_promedios, 2, sum)
puntaje_lopez_con_promedios = apply(lopez_con_promedios, 2, sum)
puntaje_lopez_sin_promedios
puntaje_lopez_con_promedios
puntaje_lopez_sin_promedios_portafolio
puntaje_lopez_con_promedios_portafolio
.. raw:: html
- 28.0121628743772
- 12.0024838071261
- 22.0028070302842
.. raw:: html
- 28.0122864992852
- 13.0025357660379
- 23.0029038116054
.. raw:: html
15.0014394129394
.. raw:: html
15.0014909723498
Conclusión general:
~~~~~~~~~~~~~~~~~~~
+---------------+----------+---------------+----------+---------------+
| | **ECO** | **PFBCOLOMB** | **ISA** | * |
| | | | | *Portafolio** |
+===============+==========+===============+==========+===============+
| VaR sin | Aceptado | Rechazado | Aceptado | Aceptado |
| promedios, NC | | | | |
| = 95% y H = | | | | |
| 250 | | | | |
+---------------+----------+---------------+----------+---------------+
| VaR con | Aceptado | Rechazado | Aceptado | Aceptado |
| promedios, NC | | | | |
| = 95% y H = | | | | |
| 250 | | | | |
+---------------+----------+---------------+----------+---------------+
| VaR sin | Aceptado | Rechazado | Aceptado | Rechazado |
| promedios, NC | | | | |
| = 95% y H = | | | | |
| 500 | | | | |
+---------------+----------+---------------+----------+---------------+
| VaR con | Aceptado | Rechazado | Aceptado | Rechazado |
| promedios, NC | | | | |
| = 95% y H = | | | | |
| 500 | | | | |
+---------------+----------+---------------+----------+---------------+
| VaR sin | Aceptado | Rechazado | Aceptado | Aceptado |
| promedios, NC | | | | |
| = 99% y H = | | | | |
| 250 | | | | |
+---------------+----------+---------------+----------+---------------+
| VaR con | Aceptado | Aceptado | Aceptado | Aceptado |
| promedios, NC | | | | |
| = 99% y H = | | | | |
| 250 | | | | |
+---------------+----------+---------------+----------+---------------+
| VaR sin | Aceptado | Aceptado | Aceptado | Aceptado |
| promedios, NC | | | | |
| = 99% y H = | | | | |
| 500 | | | | |
+---------------+----------+---------------+----------+---------------+
| VaR con | Aceptado | Aceptado | Aceptado | Aceptado |
| promedios, NC | | | | |
| = 99% y H = | | | | |
| 500 | | | | |
+---------------+----------+---------------+----------+---------------+
Puntaje de López
----------------
+------------+----------------+------------+------------+------------+
| | **ECO** | **P | **ISA** | **Po |
| | | FBCOLOMB** | | rtafolio** |
+============+================+============+============+============+
| VaR sin | 1 | 6,0001 | 15,002 | 8,0006 |
| promedios, | 7,008975741454 | 9579925925 | 1205275282 | 9513946404 |
| NC = 95% y | | | | |
| H = 250 | | | | |
+------------+----------------+------------+------------+------------+
| VaR con | 17 | 7,0002 | 16,002 | 8,000 |
| promedios, | ,0090693230293 | 1210746552 | 1880560683 | 7217329587 |
| NC = 95% y | | | | |
| H = 250 | | | | |
+------------+----------------+------------+------------+------------+
| VaR sin | 12 | 2,001 | 6,0007 | 5,0002 |
| promedios, | ,0048175999161 | 1665536307 | 3327511721 | 8956100564 |
| NC = 95% y | | | | |
| H = 500 | | | | |
+------------+----------------+------------+------------+------------+
| VaR con | 12 | 3,0011 | 6,000 | 5,0003 |
| promedios, | ,0048672309775 | 8419466552 | 7622227941 | 0436976491 |
| NC = 95% y | | | | |
| H = 500 | | | | |
+------------+----------------+------------+------------+------------+
| VaR sin | 7, | 0 | 4,0006 | 2,0001 |
| promedios, | 00397064315263 | | 4241285639 | 4445916113 |
| NC = 99% y | | | | |
| H = 250 | | | | |
+------------+----------------+------------+------------+------------+
| VaR con | 7, | 1,0000 | 4,0006 | 2,0001 |
| promedios, | 00401163260812 | 0000278114 | 6428484215 | 5154099775 |
| NC = 99% y | | | | |
| H = 250 | | | | |
+------------+----------------+------------+------------+------------+
| VaR sin | 12 | 2,0011 | 6,0007 | 5,0002 |
| promedios, | ,0048175999161 | 6655363073 | 3327511721 | 8956100564 |
| NC = 99% y | | | | |
| H = 500 | | | | |
+------------+----------------+------------+------------+------------+
| VaR con | 12 | 3,0011 | 6,000 | 5,0003 |
| promedios, | ,0048672309775 | 8419466552 | 7622227941 | 0436976491 |
| NC = 99% y | | | | |
| H = 500 | | | | |
+------------+----------------+------------+------------+------------+